#include <string.h>

char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p)
{
    if (!s && !(s = *p)) return NULL;
    s += strspn(s, sep);
    if (!*s) return *p = 0;
    *p = s + strcspn(s, sep);
    if (**p) *(*p)++ = 0;
    else *p = 0;
    return s;
}
